// Boolean 布尔值
let  isTS:boolean = true
// isTS = '213' // 报错 因为变量已限制为布尔值
// Number 数字
let isNumber:number = 23
//  isNumber ='213'  报错 因为变量已限制为数字
// string 字符串
let isString:string = '23'
//  isNumber = true  报错 因为变量已限制为字符串
// 可以使用模板字符串 let isString:string = `hello，{变量}`
// arr 数组
let list: number[] = [1, 2, 3];
// 数组泛型
// let list: Array<number> = [1, 2, 3];
// 元组类型
let arr:[string,number] = ['12',3] // 位置要放对
// console.log(arr)
// 枚举类型 元素编号默认从0 开始 赋值之后影响自己和后边的 不影响前面的
 enum Color {red,green = 8,blue}
 let c:Color  = Color.green
 //console.log(c) // 8  枚举green的元素编号（数值）为8  后面的blue为9  前面的red不受影响 依然为0
 let colorName:string = Color[8]
 //console.log(colorName) // green
 // any 任何类型
 let  isAny:any = ['23',223] // 什么类型都可以 后续重新赋值十分方便
 let  isAnylist: any[] = [1, true, "free"];
//  console.log(isAny)
//Void  表示没有任何类型 只能赋值为 null 和 undefined
let isVoid:void = null
function warnUser(): void {
    console.log("This is my warning message");
    return undefined
}
warnUser()
//类型断言 当你清除知道是什么类型的时候可以使用
let someValue: any = "this is a string";
// 两种写法 <> he as
let strLength: number = (<string>someValue).length;
// let strLength: number = (someValue as string).length;